﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using dao.daos;
using negocio.entidades;

namespace negocio.servicios
{
    public class NadadorService
    {
        private NadadorDao dao = new NadadorDao();

        public DataTable ObtenerTodo()
        {
            DataTable dt = new DataTable();
            dt.Load(dao.ObtenerTodo());
            return dt;
        }

        public DataTable ObtenerPorId(int id)
        {
            return dao.ObtenerPorId(id);
        }

        public DataTable Buscar(string nombre)
        {
            return dao.ObtenerPorNombre(nombre);
        }

        public void Eliminar(int id)
        {
            dao.Eliminar(id);
        }

        public bool Insertar(Nadador nadador)
        {
            bool exito = false;

            string[] val = GenerarStringValoresArray(nadador);
            string query = "SET DATEFORMAT dmy; INSERT INTO nadadores (nombre, apellido, email, fecha_nacimiento, sexo, telefono_uno, telefono_dos, fecha_ingreso, id_barrio) VALUES ('" + val[0] + "', '" + val[1] + "', '" + val[2] + "', '" + val[3] + "', " + val[4] + ", " + val[5] + ", " + val[6] + ", '" + val[7] + "', " + val[8] +  ")";
            
            dao.Insertar(query);
            exito = true;

            return exito;
        }

        public void Modificar(Nadador n)
        {
            string valores = GenerarStringValores(n);
            string restriccion = string.Format("id_nadador = {0}", n.Id);
            string query = "SET DATEFORMAT dmy; UPDATE nadadores SET " + valores + " WHERE " + restriccion;
            dao.Modificar(query);
        }

        private String[] GenerarStringValoresArray(Nadador n)
        {
            String[] vect = new string[9];

            vect[0] = n.Nombre.ToString();
            vect[1] = n.Apellido.ToString();
            vect[2] = n.email.ToString();
            vect[3] = n.FechaNacimiento.ToString();
            vect[4] = n.sexo.ToString();
            vect[5] = n.tel1.ToString();
            vect[6] = n.tel2.ToString();
            vect[7] = n.FechaIngreso.ToString();
            vect[8] = n.IdBarrio.ToString();

            return vect;
        }

        private string GenerarStringValores(Nadador n)
        {
            string valores =
                string.Format(
                    "nombre ='{0}', apellido ='{1}', email ='{2}', fecha_nacimiento ='{3}', sexo ={4}, telefono_uno ={5}, telefono_dos ={6}, fecha_ingreso ='{7}', id_barrio={8}",
                    n.Nombre.ToString(),
                    n.Apellido.ToString(),
                    n.email.ToString(),
                    n.FechaNacimiento.ToString(),
                    n.sexo.ToString(),
                    n.tel1.ToString(),
                    n.tel2.ToString(),
                    n.FechaIngreso.ToString(),
                    n.IdBarrio.ToString());

            return valores;
        }

        private Nadador LeerDataReader(DataTable table)
        {
            var fila = table.Rows[0];
            Nadador bus = new Nadador();
            bus.Id = Convert.ToInt32(fila["id_nadador"]);
            bus.Nombre = Convert.ToString(fila["nombre"]);
            bus.IdBarrio = Convert.ToInt32(fila["id_barrio"]);
            bus.Apellido = Convert.ToString(fila["apellido"]);
            bus.sexo = Convert.ToInt32(fila["sexo"]);
            bus.email = Convert.ToString(fila["email"]);
            bus.tel1 = Convert.ToString(fila["telefono_uno"]);
            bus.tel2 = Convert.ToString(fila["telefono_dos"]);
            bus.FechaIngreso = Convert.ToDateTime(fila["fecha_ingreso"]);
            bus.FechaIngreso = Convert.ToDateTime(fila["fecha_nacimiento"]);
            return bus;
        }

        public int obtenerNuevoId()
        {
            return dao.getRows() + 1;
        }

    }
}
